﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CoVuaClient
{
    class QuanHau : QuanCo
    {
        public QuanHau(bool pheMinh)
        {
            PheMinh = pheMinh;
            TenQuanCo = "Hau";
            DangChon = false;
            
            if (PheMinh)
            {
                PathImage = @"/CoVuaClient;component/Pic/QueenYellow.png";
            }
            else
            {
                PathImage = @"/CoVuaClient;component/Pic/QueenBlack.png";
            }
        }
        public override List<OCo> NhungOCoTheDi(BanCo banCo, OCo oHienTai, bool kiemTraChieuTuong)
        {
            List<OCo> danhSach = new List<OCo>();
            #region Theo cot va dong
            foreach (var oCo in oHienTai.DanhSachOCungCotHoacCungDong(1))
            {
                if (!kiemTraChieuTuong)
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    danhSach.Add(oCo);
                }
                else
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {                     
                        break;
                    }
                    danhSach.Add(oCo);
                }
                
            }
            foreach (var oCo in oHienTai.DanhSachOCungCotHoacCungDong(2))
            {
                if (!kiemTraChieuTuong)
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    danhSach.Add(oCo);
                }
                else
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {
                        break;
                    }
                    danhSach.Add(oCo);
                }
                
            }
            foreach (var oCo in oHienTai.DanhSachOCungCotHoacCungDong(3))
            {
                if (!kiemTraChieuTuong)
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    danhSach.Add(oCo);
                }
                else
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {
                        break;
                    }
                    danhSach.Add(oCo);
                }
                
            }
            foreach (var oCo in oHienTai.DanhSachOCungCotHoacCungDong(4))
            {
                if (!kiemTraChieuTuong)
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    danhSach.Add(oCo);
                }
                else
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {
                        break;
                    }
                    danhSach.Add(oCo);
                }
                
            }
            #endregion

            #region TheoDuongCheo
            foreach (var oCo in oHienTai.DanhSachOTrenHaiDuongCheo(1))
            {
                if (!kiemTraChieuTuong)
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    danhSach.Add(oCo);
                }
                else
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {
                        break;
                    }
                    danhSach.Add(oCo);
                }
                
            }
            foreach (var oCo in oHienTai.DanhSachOTrenHaiDuongCheo(2))
            {
                if (!kiemTraChieuTuong)
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    danhSach.Add(oCo);
                }
                else
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {
                        break;
                    }
                    danhSach.Add(oCo);
                }
                
            }
            foreach (var oCo in oHienTai.DanhSachOTrenHaiDuongCheo(3))
            {
                if (!kiemTraChieuTuong)
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    danhSach.Add(oCo);
                }
                else
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {
                        break;
                    }
                    danhSach.Add(oCo);
                }
            }
            foreach (var oCo in oHienTai.DanhSachOTrenHaiDuongCheo(4))
            {
                if (!kiemTraChieuTuong)
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    danhSach.Add(oCo);
                }
                else
                {
                    if (KiemTraCoQuanTa(banCo, oCo))
                    {
                        danhSach.Add(oCo);
                        break;
                    }
                    if (KiemTraCoQuanDich(banCo, oCo))
                    {
                        break;
                    }
                    danhSach.Add(oCo);
                }
            }
            #endregion
            return danhSach;
        }
        public override void ChangeState()
        {
            DangChon = !DangChon;
            if (DangChon)
            {
                PathImage = @"/CoVuaClient;component/Pic/QueenYellowChecked.png";
            }
            else
            {
                PathImage = @"/CoVuaClient;component/Pic/QueenYellow.png";
            }
        }
    }
}
